↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
U11(X, L, R, Xs, front_out(L, Ls)) → U21(X, L, R, Xs, Ls, front_in(R, Rs))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → U31(X, L, R, Xs, app_in(Ls, Rs, Xs))
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → APP_IN(Ls, Rs, Xs)
APP_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
U11(X, L, R, Xs, front_out(L, Ls)) → U21(X, L, R, Xs, Ls, front_in(R, Rs))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → U31(X, L, R, Xs, app_in(Ls, Rs, Xs))
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → APP_IN(Ls, Rs, Xs)
APP_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN(.(Xs), Ys) → APP_IN(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
FRONT_IN → FRONT_IN
U11(front_out(L, Ls)) → FRONT_IN
FRONT_IN → U11(front_in)
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(app_in(Xs, Ys))
app_in([], X) → app_out(X)
U4(app_out(Zs)) → app_out(.(Zs))
U3(L, R, app_out(Xs)) → front_out(tree(L, R), Xs)
front_in
U1(x0)
U2(x0, x1, x2)
app_in(x0, x1)
U4(x0)
U3(x0, x1, x2)
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → U11(front_out(tree(void, void), .([])))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → FRONT_IN
FRONT_IN → U11(front_out(tree(void, void), .([])))
U11(front_out(L, Ls)) → FRONT_IN
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(app_in(Xs, Ys))
app_in([], X) → app_out(X)
U4(app_out(Zs)) → app_out(.(Zs))
U3(L, R, app_out(Xs)) → front_out(tree(L, R), Xs)
front_in
U1(x0)
U2(x0, x1, x2)
app_in(x0, x1)
U4(x0)
U3(x0, x1, x2)
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → FRONT_IN
FRONT_IN → U11(front_out(tree(void, void), .([])))
U11(front_out(L, Ls)) → FRONT_IN
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(app_in(Xs, Ys))
app_in([], X) → app_out(X)
U4(app_out(Zs)) → app_out(.(Zs))
U3(L, R, app_out(Xs)) → front_out(tree(L, R), Xs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
U11(X, L, R, Xs, front_out(L, Ls)) → U21(X, L, R, Xs, Ls, front_in(R, Rs))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → U31(X, L, R, Xs, app_in(Ls, Rs, Xs))
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → APP_IN(Ls, Rs, Xs)
APP_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
U11(X, L, R, Xs, front_out(L, Ls)) → U21(X, L, R, Xs, Ls, front_in(R, Rs))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → U31(X, L, R, Xs, app_in(Ls, Rs, Xs))
U21(X, L, R, Xs, Ls, front_out(R, Rs)) → APP_IN(Ls, Rs, Xs)
APP_IN(.(X, Xs), Ys, .(X, Zs)) → U41(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN(.(X, Xs), Ys, .(X, Zs)) → APP_IN(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APP_IN(.(Xs), Ys) → APP_IN(Xs, Ys)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
FRONT_IN(tree(X, L, R), Xs) → U11(X, L, R, Xs, front_in(L, Ls))
U11(X, L, R, Xs, front_out(L, Ls)) → FRONT_IN(R, Rs)
FRONT_IN(tree(X, L, R), Xs) → FRONT_IN(L, Ls)
front_in(tree(X, L, R), Xs) → U1(X, L, R, Xs, front_in(L, Ls))
front_in(tree(X, void, void), .(X, [])) → front_out(tree(X, void, void), .(X, []))
front_in(void, []) → front_out(void, [])
U1(X, L, R, Xs, front_out(L, Ls)) → U2(X, L, R, Xs, Ls, front_in(R, Rs))
U2(X, L, R, Xs, Ls, front_out(R, Rs)) → U3(X, L, R, Xs, app_in(Ls, Rs, Xs))
app_in(.(X, Xs), Ys, .(X, Zs)) → U4(X, Xs, Ys, Zs, app_in(Xs, Ys, Zs))
app_in([], X, X) → app_out([], X, X)
U4(X, Xs, Ys, Zs, app_out(Xs, Ys, Zs)) → app_out(.(X, Xs), Ys, .(X, Zs))
U3(X, L, R, Xs, app_out(Ls, Rs, Xs)) → front_out(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
FRONT_IN → FRONT_IN
U11(front_out(L, Ls)) → FRONT_IN
FRONT_IN → U11(front_in)
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(Xs, Ys, app_in(Xs, Ys))
app_in([], X) → app_out([], X, X)
U4(Xs, Ys, app_out(Xs, Ys, Zs)) → app_out(.(Xs), Ys, .(Zs))
U3(L, R, app_out(Ls, Rs, Xs)) → front_out(tree(L, R), Xs)
front_in
U1(x0)
U2(x0, x1, x2)
app_in(x0, x1)
U4(x0, x1, x2)
U3(x0, x1, x2)
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → U11(front_out(tree(void, void), .([])))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → FRONT_IN
FRONT_IN → U11(front_out(tree(void, void), .([])))
U11(front_out(L, Ls)) → FRONT_IN
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(Xs, Ys, app_in(Xs, Ys))
app_in([], X) → app_out([], X, X)
U4(Xs, Ys, app_out(Xs, Ys, Zs)) → app_out(.(Xs), Ys, .(Zs))
U3(L, R, app_out(Ls, Rs, Xs)) → front_out(tree(L, R), Xs)
front_in
U1(x0)
U2(x0, x1, x2)
app_in(x0, x1)
U4(x0, x1, x2)
U3(x0, x1, x2)
FRONT_IN → U11(U1(front_in))
FRONT_IN → U11(front_out(void, []))
FRONT_IN → FRONT_IN
FRONT_IN → U11(front_out(tree(void, void), .([])))
U11(front_out(L, Ls)) → FRONT_IN
front_in → U1(front_in)
front_in → front_out(tree(void, void), .([]))
front_in → front_out(void, [])
U1(front_out(L, Ls)) → U2(L, Ls, front_in)
U2(L, Ls, front_out(R, Rs)) → U3(L, R, app_in(Ls, Rs))
app_in(.(Xs), Ys) → U4(Xs, Ys, app_in(Xs, Ys))
app_in([], X) → app_out([], X, X)
U4(Xs, Ys, app_out(Xs, Ys, Zs)) → app_out(.(Xs), Ys, .(Zs))
U3(L, R, app_out(Ls, Rs, Xs)) → front_out(tree(L, R), Xs)